Inside Macintosh: QuickTime Components

| Previous | Chapter contents | Chapter top | Section top | Next |

Implementing the Required Export Component Functions

Listing 3 provides the component dispatchers for the movie export component together with the required functions.

Listing 3 Implementing the required export functions

typedef struct {
    ComponentInstance self;
} ExportPICSGlobalsRecord, *ExportPICSGlobals;

/* entry point for all Component Manager requests */
pascal ComponentResult ExportPICSDispatcher
                                        (ComponentParameters *params,
                                         Handle storage)

{
    OSErr err = badComponentSelector;
    ComponentFunction componentProc = 0;

    switch (params->what) {
        case kComponentOpenSelect:
            componentProc = ExportPICSOpen; break;
        case kComponentCloseSelect:
            componentProc = ExportPICSClose; break;
        case kComponentCanDoSelect:
            componentProc = ExportPICSCanDo; break;
        case kComponentVersionSelect:
            componentProc = ExportPICSVersion; break;
        case kMovieExportToFileSelect:
            componentProc = ExportPICSToFile; break;
    }
    if (componentProc)
        err = CallComponentFunctionWithStorage (storage, params,
                                                             componentProc);
    return err;
}

pascal ComponentResult ExportPICSCanDo (ExportPICSGlobals store,
                                                     short ftnNumber)
{
    switch (ftnNumber) {
        case kComponentOpenSelect:
        case kComponentCloseSelect:
        case kComponentCanDoSelect:
        case kComponentVersionSelect:
        case kMovieExportToFileSelect:
            return true;
            break;
        default:
            return false;
            break;
    }
}

pascal ComponentResult ExportPICSVersion (ExportPICSGlobals store)
{
    return 0x00010001;
}

pascal ComponentResult ExportPICSOpen (ExportPICSGlobals store,
                                           ComponentInstance self)
{
    OSErr err;

    store = (ExportPICSGlobals) NewPtrClear
                (sizeof(ExportPICSGlobalsRecord));
    if (err = MemError()) goto bail;
    store->self = self;

    SetComponentInstanceStorage(self, (Handle)store);

bail:
    return err;
}

pascal ComponentResult ExportPICSClose (ExportPICSGlobals store,
                                           ComponentInstance self)
{
    if (store) DisposPtr((Ptr)store);

    return noErr;
}

© 1997 Apple Computer, Inc.

| Previous | Chapter contents | Chapter top | Section top | Next |